Register Names

The following is a list of register names for x86-64 assembly

Base Label Labels for Lower n-bits of a Register Additional Info
8-bit 16-bit 32-bit 64-bit
a al ax eax rax a for accumulator
b bl bx ebx rbx b for base
c cl cx ecx rcx c for counter
d dl dx edx rdx d for data
si sil si esi rsi source index
di dil di edi rdi destination index
bp bpl bp ebp rbp stack base pointer
sp spl sp esp rsp stack pointer (end position of runtime stack)
r8 r8b r8w r8d r8
r9 r9b r9w r9d r9
r10 r10b r10w r10d r10
r11 r11b r11w r11d r11
r12 r12b r12w r12d r12
r13 r13b r13w r13d r13
r14 r14b r14w r14d r14
r15 r15b r15w r15d r15

Additional Notes:

In the 8-bit column for the first 8 register, l stands for low or lower. You can actually address the upper 8-bits of the lower 16-bits with h.

In the 4 central columns for registers r8 through r15, the letter b stands for byte (8-bits being addressed), w for word (there was a time where most machines had a word size of 16 bits, that is, this is a legacy holdover from that time), and d for double word (32-bits is twice 16-bits).

There are some additional registers outside of the 16 mentioned above, that is the ip, or instruction pointer register, and then the status flags.